<?php

namespace Plugins\AdminBasic\Models;

use App\Models\Model;
use Carbon\Carbon;
use App\Models\Attributes\CreateSql;


/**
 * 管理员角色
 * 
 * @property int    $id                 ID
 * @property string $name               角色
 * @property string $creator_belongs_to 创建者属于那个表
 * @property int    $creator_id         创建者ID
 * @property string $describe           描述
 * @property array  $route_ids          权限路由ID集合
 * @property Carbon $create_time        创建时间
 * @property Carbon $update_time        更新时间
 * @property int    $delete_time        删除时间
 */
#[CreateSql(<<<SQL
CREATE TABLE `sd_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(32) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '角色',
  `creator_belongs_to` varchar(32) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建者属于那个表',
  `creator_id` int(11) NOT NULL DEFAULT '0' COMMENT '创建者ID',
  `describe` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '描述',
  `route_ids` json DEFAULT NULL COMMENT '权限路由ID集合',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  `delete_time` int(11) DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='管理员角色'
SQL)]
class BasicRole extends Model
{


    protected array $casts = [
        ...self::DEFAULT_CASTS,
        'id' => 'int',
        'creator_id' => 'int',
        'route_ids' => 'array'
    ];

    protected array $fillable = ['name', 'creator_belongs_to', 'creator_id', 'describe', 'route_ids'];

    protected ?string $table = 'basic_role';
}